MQTT_Unsubscribe-Baustein

Kurz-Information

Name

MQTT_Unsubscribe

→POE-Typ

→Funktion

Kategorie

Weitere Systembausteine, MQTT, Baustein mit interner Fehlerdiagnose

Grafische Schnittstelle

Verfügbar ab

Version 2.0.17 (für Bibliothek System) und Version 4.5.0 des →Laufzeitsystems

(Warnung) Dieser Baustein wird für die integrierte SPS und →Raspberry unterstützt.

Funktionalität

Der Baustein meldet eine bestehende Verbindung von einem bestimmten Thema ab. Diese Verbindung wird durch einen Verbindungshandler definiert.

(Info) Die Übertragung der Daten erfolgt mit Hilfe eines bereits vorhandenen MQTT-Brokers (siehe "Datenübertragung via MQTT vorbereiten/durchführen").

Eingänge, Ausgänge, Ergebniswert

 

Bezeichner

→Datentyp

Beschreibung

Eingänge:

ch

DINT

Verbindungshandler, wie vom MQTT_Connect-Baustein erhalten

topic

STRING

Thema, für das abgemeldet wird

Ausgänge:

rc

MQTT_RC

Ergebniscode der beteiligten MQTT-Funktionen, wie im Datentyp MQTT_RC definiert

Der Eingang EN und der Ausgang ENO sind für den →Aufruf des Bausteins verfügbar. Siehe "Ausführungssteuerung: EN, ENO" für Informationen zum Eingang EN und zum Ausgang ENO.

Informieren Sie sich unter:

Interne Fehlerdiagnose für Baustein

Der Baustein prüft folgende Fehlerfälle und setzt – bei Auftreten dieser Fehlerfälle – den Ausgang ENO des Bausteins auf den Wert FALSE (oder eine Entsprechung):

  • Während des Sendens einer Benachrichtigung an das →Laufzeitsystem ist ein interner Fehler aufgetreten.

  • Die Funktionalität des Bausteins konnte nicht ausgeführt werden.

Beispiel für Verwendung im ST-Editor

PROGRAM MQTTSubscribeUnsubscribeExample
    VAR
        connection_handler : DINT := -1;
        return_code : MQTT_RC;
        subscriber_state : MQTT_SUBSCRIBER_STATE := MQTT_SUBSCRIBER_STATE#INVALID;
        subscribed_to_topic : BOOL := FALSE;
        subscribe_flag : BOOL := FALSE;
    END_VAR
    
    subscriber_state := MQTT_GetState(ch := connection_handler, rc => return_code, ENO => ENO);
    
    /* Establish a MQTT connection to a broker */
    IF subscriber_state <> MQTT_SUBSCRIBER_STATE#CONNECTING AND subscriber_state <> MQTT_SUBSCRIBER_STATE#CONNECTED THEN
        connection_handler := MQTT_Connect(address := 'tcp://192.168.1.100:1883', clientId := 'RTS1', rc => return_code, ENO => ENO);
    END_IF;
    
    /* Check if the client is connected to the broker */
    IF subscriber_state = MQTT_SUBSCRIBER_STATE#CONNECTED THEN
        /* If the subscribe flag is set... */
        IF subscribe_flag THEN
            /* ...make sure the client is subscribed to a specific topic... */
            IF NOT(subscribed_to_topic) THEN
                MQTT_Subscribe(ch := connection_handler, topic := 'example-topic', rc => return_code, ENO => ENO);
                subscribed_to_topic := return_code = MQTT_RC#OK;
            ELSE
                /* ...and publish or receive messages over MQTT inside this block */
            END_IF;
        /* If the subscribe flag is NOT set... */
        ELSE
            /* ...and the client is subscribed to a specific topic... */
            IF subscribed_to_topic THEN
                /* ...unsubscribe the client from this topic */
                MQTT_Unsubscribe(ch := connection_handler, topic := 'example-topic', rc => return_code, ENO => ENO);
                subscribed_to_topic := NOT(return_code = MQTT_RC#OK);
            END_IF;
        END_IF;
    END_IF;
 
END_PROGRAM

Bei der Erstellung Ihrer Anwendung im ST-Editor erstellen Sie den Aufruf eines Bausteins, indem Sie den laut Syntax erforderlichen Text eintippen oder die Inhaltshilfe verwenden.